home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacFormat 1995 June
/
MacFormat 25.iso
/
Shareware City
/
Developers
/
Tools Plus 2.5.3 Evaluation Kit
/
Tools Plus 2.5.3
/
Tools Plus 2.5.3 for Pascal
/
ToolsPlus.p
< prev
Encoding:
Amiga
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
NeXTSTEP
RISC OS/Acorn
Shift JIS
UTF-8
Wrap
Text File
|
1994-12-12
|
59.9 KB
|
1,156 lines
|
[
TEXT/PJMM
]
{ Tools Plus (Version 2.5.3) Pascal interface }
{ Copyright (C) 1989-95 Water’s Edge Software }
{ This unit is the interface between Pascal applications and Tools Plus. It must be used by any program or unit }
{ that makes reference to any part of Tools Plus. }
{ }
{ All TYPEs, VARiables, and CONSTants required by Tools Plus are included. }
{ }
{ You must include the entire set of Tools Plus libraries and related files in your project: }
{ ToolsPlus.Lib1 }
{ ToolsPlus.Lib2 }
{ ToolsPlus.Lib3 }
{ ToolsPlus.p }
unit ToolsPlus;
interface
const
UseColor = true; {INITIALIZATION: Use color if available }
IgnoreColor = false; { Don't use color }
doNothing = 0; {POLLING: no event }
doChgWindow = 1; { user clicked in an inactive window }
doRefresh = 2; { a window has to be refreshed }
doGoAway = 3; { the close box was clicked }
doButton = 4; { button was clicked }
doMenu = 5; { menu was selected }
doKeyDown = 6; { a keyboard key was pressed }
doAutoKey = 7; { a keyboard key is auto-repeating }
doKeyUp = 8; { a keyboard key was released }
doClickField = 9; { mouse clicked in inactive field }
doScrollBar = 10; { mouse clicked in a scroll bar }
doListBox = 11; { some sort of List Box activity }
doClick = 12; { mouse click/drag }
doPopUpMenu = 13; { pop-up menu was selected }
doPictButton = 14; { picture button activity }
doClickControl = 101; { mouse clicked in a custom control }
doManualEvent = 102; { manually processed events }
doMoveWindow = 103; { a window was moved by user }
doGrowWindow = 104; { a window was re-sized by the user }
doClickDesk = 105; { mouse clicked in the desk top }
doZoomWindow = 106; { zoom box was clicked by user }
doSuspend = 107; { appl. suspended (in background) }
doResume = 108; { appl. resumed (now active appl.) }
doChgInField = 109; { editing field contents was changed }
doPreRefresh = 110; { refresh window before T+ objects }
inClick1 = 1; {CLICK: mouse single-click completed }
inClick2 = 2; { mouse double-click completed }
inClick3 = 3; { mouse triple-click completed }
inClick1Drag = -1; { mouse single-click, still dragging }
inClick2Drag = -2; { mouse double-click, still dragging }
inClick3Drag = -3; { mouse triple-click, still dragging }
EnterKey = chr($03); {KEYS: Key characters (ASCII) for common }
BackSpaceKey = chr($08); { non apha-numeric keys. }
TabKey = chr($09); { In some cases, several keys }
ReturnKey = chr($0D); { produce the same ASCII }
EscClearKey = chr($1B); { ($1B) character. They can be }
LeftArrowKey = chr($1C); { differentiated by using the key }
RightArrowKey = chr($1D); { code, as indicated below. }
UpArrowKey = chr($1E); { Some keys are available only }
DownArrowKey = chr($1F); { on an extended keyboard. }
HelpKey = chr($05); { }
HomeKey = chr($01); { }
DeleteFwdKey = chr($7F); { }
EndKey = chr($04); { }
PageUpKey = chr($0B); { }
PageDownKey = chr($0C); { }
FKey = chr($10); { ($10) Function keys F1 to F15 }
EscKeyCode = $35; { ($1B) KEY CODES used to differentiate }
ClearKeyCode = $47; { ($1B) between keys which produce }
F1KeyCode = $7A; { the same key characters. }
F2KeyCode = $78; { }
F3KeyCode = $63; { }
F4KeyCode = $76; { }
F5KeyCode = $60; { }
F6KeyCode = $61; { }
F7KeyCode = $62; { }
F8KeyCode = $64; { }
F9KeyCode = $65; { }
F10KeyCode = $6D; { }
F11KeyCode = $67; { }
F12KeyCode = $6F; { }
F13KeyCode = $69; { }
F14KeyCode = $6B; { }
F15KeyCode = $71; { }
mDividingLine = '-'; {MENUS: Dividing line }
AppleChar = chr($14); {MENU CHARS: Apple character }
CheckChar = chr($12); { Check Mark character }
DiamondChar = chr($13); { Diamond character }
DotChar = chr($A5); { Dot (or bullet) character }
NoChar = chr($00); { no character }
{PICTURE BUTTONS: }
picbutInstantEvent = $80000000; { Report event on mouse-down }
picbutTrackWithHilite = $40000000; { Track using hiliting, like a radio button }
picbutLockSelected = $20000000; { Lock if selected (mouse can't deselect) }
picbutSwitchSelected = $10000000; { Switch 'selected' state if clicked }
picbutRepeatEvents = $08000000; { Repeat event when button is held down }
picbutAutoValueChg = $04000000; { Automatically change button's value }
picbutScaleLinear = $00000000; { Rate of automatic value change… }
picbutScaleSlowAccel = $01000000; { Linear, Slow Acceleration, }
picbutScaleMedAccel = $02000000; { Medium Acceleration, and }
picbutScaleFastAccel = $03000000; { Fast Acceleration. }
picbutLinear = 0; { Linear (use in structure) }
picbutSlowAccel = 1; { Slow (use in structure) }
picbutMedAccel = 2; { Medium (use in structure) }
picbutFastAccel = 3; { Fast (use in structure) }
picbutValueWrap = $00800000; { Button's range of values 'wrap' around }
picbutLeftRightSplit = $00400000; { Left side reduces value, right increases }
picbutTopBottomSplit = $00200000; { Top increases value, bottom reduces }
picbutMultiStage = $00100000; { Button has multiple stages }
picbutBigSICN3D = $00080000; { Create a larger SICN 3D button }
picbutUsePICTS = $00040000; { Use PICTs instead of icons }
picbutGray4use8 = $00020000; { Use 8-bit color pict on 4-bit gray monitor }
{ Selection Effects… }
picbutSelectDarken = $00010000; { Darken image }
picbutSelectDarkenSICN3D = $00008000; { Darken (and push in) a 3D SICN icon }
picbutSelectLightenSICN3D = $00004000; { Lighten (and push in) a 3D SICN icon }
picbutSelectPushedSICN3D = $00002000; { Same color (and push in) a 3D SICN icon}
picbutSelectAltImage = $00000400; { Use an alternate image }
{ Disabling Effects… }
picbutDimUsingBlackLite = $00000100; { Overlay Black color using Lt Gray pat. }
picbutDimUsingWhiteLite = $00000080; { Overlay White color using Lt Gray pat. }
picbutDimUsingWhite = $00000040; { Overlay White color using Gray pat. }
picbutDimLeaveBorder = $00000008; { Leave border when applying effect }
picbutDimAltImage = $00000004; { Use an alternate image }
picbutDimNoChange = $00000002; { Button looks the same when disabled }
{POP-UP MENUS: }
popupNeverDimOutline = $0100; { Never dim the control's outline? }
popupNeverDimSelection = $0080; { Never dim the selected item's text? }
popupNeverDimTitle = $0040; { Never dim the title? }
popupNoArrow = $0020; { Is the "down arrow" hidden? }
popupMultiSelect = $0010; { Allow multiple items to be selected? }
popupUseWFont = $0008; { Use the window's font for the menu? }
popupIconTitle = $0004; { Draw icon in the control's title? }
popupFixedTitle = $0002; { Is a fixed title displayed in the control? }
popupDefaultType = $0000; { Default menu (sys font, 1 item, no icon) }
arrowCursor = 0; {CURSORS: "arrow" cursor }
GoAway = true; {WINDOWS: no "close box" }
NoGoAway = false; { window has a "close box" }
Modal = true; { window is modal }
NotModal = false; { window is modeless }
ZoomBox = 8; { zoom box (add to procID) }
wCenter = $00010000; { auto-centering (add to procID) }
wTile = $00020000; { auto-tiling (add to procID) }
wPalette = $80000000; { palette behavior (add to procID) }
ordPaletteProc = 32000; { window that looks like Palette }
paletteProc = 32000 + wPalette; { T+’s Floating Palette window }
altPaletteProc = 32002 + wPalette; { T+’s palette with drag bar on left }
wNoKind = 0; { Kinds of Windows: Not open }
wToolBarKind = 1; { Tool Bar }
wFloatingKind = 2; { Floating Palette }
wStandardKind = 3; { Standard Window }
wAnimateMove = $01; { Moving Windows: Animate w/Zoom Lines }
wOffsetForToolBar = $02; { Offset co-ords for TB }
wShow = true; { Hiding Windows: Display (unhide) }
wHide = false; { Hide window }
tbShiftWindows = $01; {TOOL BAR: Shift windows when TB opens }
tbOffsetNewWindows = $02; { Offset new windows as they }
{ are opened (if TB is open). }
DefaultButton = 4; {BUTTONS: “default” for the window }
selected = true; { button is selected (i.e. checked)}
notSelected = false; { button is not selected }
scrlLeftEdge = -1; {SCROLL BARS: left edge of document }
scrlTopEdge = -1; { top edge of document }
scrlRightEdge = 32767; { right edge of document }
scrlBottomEdge = 32767; { bottom edge of document }
{BUTTONS, MENUS, SCROLL BARS & ICONS: }
enabled = true; { object is enabled }
disabled = false; { object is disabled }
teBoxNoCR = 0; {EDIT FIELDS: box around field, no CR allowed }
teBoxCR = 1; { box around field, CR allowed }
teNoBoxNoCR = 2; { no box, no CR allowed }
teNoBoxCR = 3; { no box, CR allowed }
teSelectAll = 0; {EDIT FIELD SELECTION: all of text }
teSelectStart = 1; { beginning of text }
teSelectEnd = 2; { end of text }
teReplace = true; {PASTE INTO FIELD: replace field contents }
teInsert = false; { insert text into field }
OkAltBut = 1; {ALERTS: OK (Buttons refs) }
CanAltBut = 2; { Cancel }
YesAltBut = 3; { Yes }
NoAltBut = 4; { No }
ContAltBut = 5; { Continue }
SkipAltBut = 6; { Skip }
QuitAltBut = 7; { Quit }
NoButtonAlert = 0; { No buttons (Alert Defs) }
OkAlert = 11100; { OK (default) }
CanAlert = 11200; { Cancel (default) }
OkCanAlert = 22210; { OK (default) + Cancel }
CanOkAlert = 21210; { OK + Cancel (default) }
YesNoAlert = 22430; { Yes (default) + No }
NoYesAlert = 21430; { Yes + No (default) }
YesNoCanAlert = 33243; { Yes (default) + No + Cancel }
NoYesCanAlert = 32243; { Yes + No (default) + Cancel }
nmSysBeep = -1; {NOTIFICATION: Use System Error sound }
nmSilentNote = 0; { Silent notification }
nmDefaultMsg = ' '; { Use default message }
nmNoMsg = ''; { Don't display an alert }
nmResetWhenDone = true; { Reset to defaults after used}
nmKeepSettings = false; { Keep settings after used }
NoIcon = -32768; {ICONS: No icon used }
{ Disabled icons' default appearance… }
DfltIconDimBlackLtPat = $01; { Overlay Black color w/ Lt Gray pat. }
DfltIconDimWhiteLtPat = $02; { Overlay White color w/ Lt Gray pat. }
DfltIconDimWhitePat = $04; { Overlay White color w/ Gray pat. }
DfltIconLeaveBorder = $20; { Leave border when selected or disabled }
DfltIconUpdateNow = $8000; { Update all windows with changes }
on = true; {MISCELLANEOUS: }
off = false; { }
maxNullTime = $7FFFFFFF; { Infinite time between doNothing evts }
ZoomAcross = 0; {ZOOM LINES: transitional }
ZoomIn = -1; { zoom inward (further away) }
ZoomOut = 1; { zoom outward (nearer) }
none = 0; {used primarily for polling }
type
{ - - - - - - - - - - These record "types" are used for information transfer between - - - - - - - - - - - }
{ your application and Tools Plus libraries. }
{= Polling record's "event modifiers" info}
TPModifiersRec = packed record {This variable record contains an event's }
case integer of { "modifiers" in 2 formats… }
0: ( { • Macintosh Event: }
Num: integer { integer (bit operations required) }
); { }
1: ( { • Modifier integer parsed into components: }
bit15, bit14, bit13: boolean; { (reserved bits) }
ControlKey: boolean; { Control key was down at event (=1) }
OptionKey: boolean; { Option key was down at event (=1) }
CapsLock: boolean; { Caps Lock was down at event (=1) }
ShiftKey: boolean; { Shift key was down at event (=1) }
CmdKey: boolean; { Command key was down at event (=1) }
MouseUp: boolean; { Mouse button was UP at event (=1) }
bit6, bit5, bit4, bit3, bit2, bit1, bit0: boolean { (reserved bits) }
); { }
end;
{= Polling record's "button" info}
TPPollButtonRec = record
Num: integer; {Button number }
DoubleClick: boolean {Did a double-click occur? }
end;
{= Polling record's "scroll bar" info}
TPPollScrollBarRec = record
Num: integer; {Scroll bar number }
Part: integer {Scroll bar's part }
end;
{= Polling record's "list box" info}
TPPollListBoxRec = record
Num: integer; {List box number }
DoubleClick: boolean {Did a double-click occur? }
end;
{= Polling record's "menu" info}
TPPollMenuRec = record
Num: integer; {Menu number }
Item: integer {Menu item number }
end;
{= Polling record's "key-stroke" info}
TPPollKeyRec = packed record
Code: integer; {Logical key number of the typed key }
Chr: char; {ASCII character generated by typed key }
Unused: byte { (reserved byte) }
end;
{= Polling record's "mouse location and time" info for mouse-down and mouse-up events}
TPPollMousePointRec = record
Where: point; {Event location in local co-ordinates }
When: longint; {Event time in clock ticks from boot (1/60 sec) }
Modifiers: TPModifiersRec {Event modifiers }
end;
{= Polling record's "mouse click/drag" info}
TPPollMouseRec = record
What: integer; {What type of mouse event? (click or drag) }
Down: array[1..3] of TPPollMousePointRec; {Where & when did the mouse-down occur }
Up: array[1..3] of TPPollMousePointRec; {Where & when did the mouse-up occur }
Where: point {Current mouse location in local co-ordinates }
end;
{= POLLING record for Tools Plus}
TPPollPointer = ^TPPollRecord; {Pointer to a Polling record }
TPPollRecord = record {Tools Plus Polling record… }
What: integer; {What type of event has occurred? }
Window: integer; {Window number of the event }
Button: TPPollButtonRec; {Button number/double-click status }
ScrollBar: TPPollScrollBarRec; {Scroll bar number/scroll bar part }
Field: integer; {Field number of event }
ListBox: TPPollListBoxRec; {List box number/double-click status }
Menu: TPPollMenuRec; {Menu number/menu item of an event }
Key: TPPollKeyRec; {Logical key number & character of typed key }
Mouse: TPPollMouseRec; {Click/drag info: [1..3] where & when }
Modifiers: TPModifiersRec; {Modifier flags }
Event: EventRecord {Macintosh Toolbox Event (raw) }
end;
{= WINDOW status information}
TPWindowStatus = record {Window status record… }
Kind: integer; { • Window kind: Tool Bar, Palette, or Standard }
Open: boolean; { • Is the window open? }
Visible: boolean; { • Is this window visible (not hidden)? }
Active: boolean; { • Is this window active? }
Front: boolean; { • Is this the frontmost Tools Plus window? }
Current: boolean; { • Is this the current window? }
WorkWindow: boolean; { • Is this the work window? }
EditFieldWindow: boolean; { • Does this window have the app's active field? }
ActiveField: integer; { • Window's active field number }
StrucRect: rect; { • Structure rect (global). Incl border & title bar }
ContRect: rect; { • Content rect (global). Working area only. }
end;
{= Color Pen information}
ColorPenState = record {Color equivalent for a 'PenState' record. This }
PenState: PenState; { record also stores additional values for the }
ForegroundColor: RGBColor; { window's foreground and background }
BackgroundColor: RGBColor { colors. }
end;
{= Picture Button Appearance & Behavior Specification (or you can use constants instead) }
TPPictButtonSpec = packed record {Picture Button's appearance and behavior }
{ specifications in 2 formats… }
case integer of { }
0: ( { • Parsed into components: }
InstantEvent: boolean; { Report event on mouse-down }
TrackWithHilite: boolean; { Track using hiliting, like a radio button }
LockSelected: boolean; { Lock if selected (mouse can't deselect) }
SwitchSelected: boolean; { Switch 'selected' state if clicked }
RepeatEvents: boolean; { Repeat event when button is held down }
AutoValueChg: boolean; { Automatically change button's value }
AutoValueScaling: 0..3; { Rate of change for button's value }
ValueWrap: boolean; { Button's range of values 'wrap' around }
LeftRightSplit: boolean; { Left side reduces value, right increases }
TopBottomSplit: boolean; { Top increases value, bottom reduces }
MultiStage: boolean; { Button has multiple stages }
BigSICN3D: boolean; { Create a larger SICN 3D button }
UsePICTS: boolean; { Use PICTs instead of icons }
Gray4use8: boolean; { Use 8-bit color pict on 4-bit gray monitor }
{ Selection Effects… }
SelectDarken: boolean; { Darken image }
SelectDarkenSICN3D: boolean; { Darken (and push in) a 3D SICN icon }
SelectLightenSICN3D: boolean; { Lighten (and push in) a 3D SICN icon }
SelectPushedSICN3D: boolean; { Same color (and push in) a 3D SICN icon}
bit19, bit20: boolean; { (reserved bits) }
SelectAltImage: boolean; { Use an alternate image }
bit22: boolean; { (reserved bit) }
{ Disabling Effects… }
DimUsingBlackLite: boolean; { Overlay Black color using Lt Gray pat. }
DimUsingWhiteLite: boolean; { Overlay White color using Lt Gray pat. }
DimUsingWhite: boolean; { Overlay White color using Gray pat. }
bit26, bit27: boolean; { (reserved bits) }
DimLeaveBorder: boolean; { Leave border when applying effect }
DimAltImage: boolean; { Use an alternate image }
DimNoChange: boolean; { Button looks the same when disabled }
bit31: boolean; { (reserved bit) }
); { }
1: ( { • Longint equivalent: }
Num: longint; { Specification longint }
); { }
end;
{= Pop-Up Menu Appearance & Behavior Specification (or you can use constants instead) }
TPPopUpMenuSpec = packed record {Pop-Up Menu's appearance and behavior }
{ specifications in 2 formats… }
case integer of { }
0: ( { • Parsed into components: }
bit15, bit14, bit13, bit12: boolean; { (reserved bits) }
bit11, bit10, bit9: boolean; { (reserved bits) }
NeverDimOutline: boolean; { Never dim the control's outline? }
NeverDimSelectedItem: boolean; { Never dim the selected item's text? }
NeverDimTitle: boolean; { Never dim the title? }
NoArrow: boolean; { Is the "down arrow" hidden? }
MultipleSelections: boolean; { Allow multiple items to be selected? }
useWFont: boolean; { Display using window's font? }
IconInTitle: boolean; { Draw icon in the control's title? }
FixedTitle: boolean; { Is a fixed title displayed in the control? }
bit0: boolean; { (reserved bit) }
); { }
1: ( { • Integer equivalent: }
Num: integer; { Specification integer }
); { }
end; { }
{==================================== I N I T I A L I Z A T I O N ==================================== }
{Initialize Tools Plus}
function InitToolsPlus (MoreHandles: integer; {Number of MoreMasters initializing cycles }
MaxWindows: integer; {Maximum number of windows required }
UseColorFlag: boolean {Should Color QuickDraw be used if available? }
): Boolean; {Was initialization successful? }
{======================================= W I N D O W S ======================================== }
{Open a window and make it current}
procedure WindowOpen (Window: integer; {Window number }
left, top, right, bottom: integer; {Window's co-ordinates (global) }
Title: string; {Window's title (if applicable) }
procID: longint; {Window definition ID }
goAwayFlag, modalFlag: Boolean); {Include Close Box? Is window modal? }
{Open a window and make it current (co-ordinates specified as a 'rect') }
procedure WindowOpenRect (Window: integer; {Window number }
Bounds: rect; {Window's co-ordinates (global) }
Title: string; {Window's title (if applicable) }
procID: longint; {Window definition ID }
goAwayFlag, modalFlag: Boolean); {Include Close Box? Is window modal? }
{Open the tool bar and make it current}
procedure ToolBarOpen (Window: integer; {Window number }
Height: integer; {Tool bar height }
procID: integer); {Appearance/behavior specifications }
{Close a window}
procedure WindowClose (Window: integer); {Window number }
{Change a window's size}
procedure WindowSize (Window: integer; {Window number }
Width, Height: integer; {Window's new width and height }
Update: boolean); {Force doRefresh event for newly exposed rgn? }
{Move a window to the specified co-ordinates}
procedure WindowMove (Window: integer; {Window number }
hGlobal: integer; {Horizontal co-ordinates (global) }
vGlobal: integer; {Vertical co-ordinates (global) }
procID: integer); {Behavior specification }
{Hide or show a window}
procedure WindowDisplay (Window: integer; {Window number }
Show: boolean); {Should the window be shown? }
{Make a specified window the "active" and "current" window}
procedure ActivateWindow (Window: integer); {Window number }
{Set a window's title}
procedure WindowTitle (Window: integer; {Window number }
Title: string); {Window's title (if applicable) }
{Set the current window's "growing" limits (i.e. maximum/minimum size) }
procedure SetWindowSizeLimits (minHoriz, minVert, maxHoriz, MaxVert: integer);{Window's size limits in pixels}
{Set the current window's standard co-ordinates and user co-ordinates for "zooming"}
procedure SetWindowZoom (userRect, stdRect: rect); {User & standard co-ordinates (global) }
{Get the current window's user co-ordinates & standard co-ordinates for "zooming"}
procedure GetWindowZoom (var userRect, stdRect: Rect); {User & standard co-ordinates (global) }
{Make a specified window "current", but do not activate it}
procedure CurrentWindow (Window: integer); {Window number }
{Make the "active" window "current"}
procedure CurrentWindowReset;
{Get a window's status}
procedure WindowStatus (Window: integer; {Window number }
var Status: TPWindowStatus); {Window's status record }
{Get the active window number (last used window if Tool Bar and/or Floating Palettes are open) }
function ActiveWindowNumber: integer; {Window number of active window }
{Get the current window number}
function CurrentWindowNumber: integer; {Window number of current window }
{Get the front most window number}
function FirstWindowNumber: integer; {Window number of front most window }
{ window is open. }
{Get the Tool Bar's window number}
function ToolBarNumber: integer; {Tool Bar's window number }
{Get the first floating Palette's window number}
function FirstPaletteNumber: integer; {Front most floating Palette's window number }
{Get the first standard window's number (not Tool Bar or Floating Palette).}
function FirstStdWindowNumber: integer; {Front most standard window's number }
{Get the working window number}
function WorkWindowNumber: integer; {Working window number }
{Get the window number that contains the active editing field}
function EditFldWindowNumber: integer; {Window number containing active editing field }
{Determine if a window is open}
function WindowIsOpen (Window: integer {Window number }
): boolean; {Is the window open? }
{Determine if a window is visible (open and not hidden)}
function WindowIsVisible (Window: integer {Window number }
): boolean; {Is the window visible? }
{Determine the type of window}
function WindowKind (Window: integer {Window number }
): integer; {Kind of window }
{Get a window's "window pointer" }
function WindowPointer (Window: integer {Window number }
): WindowPtr; {Window's pointer }
{======================================== B U T T O N S ======================================== }
{Create a new button}
procedure NewButton (Button: integer; {Button number }
left, top, right, bottom: integer; {Button's co-ordinates (local) }
Title: string; {Button's title }
procID: integer; {Button's definition ID }
EnabledFlag, SelectedFlag: boolean); {Enable the button? Select the button? }
{Create a new button (co-ordinates specified as a 'rect') }
procedure NewButtonRect (Button: integer; {Button number }
Bounds: rect; {Button's co-ordinates (local) }
Title: string; {Button's title }
procID: integer; {Button's definition ID }
EnabledFlag, SelectedFlag: boolean); {Enable the button? Select the button? }
{Delete a button}
procedure DeleteButton (Button: integer); {Button number }
{Enable/disable a button}
procedure EnableButton (Button: integer; {Button number }
EnabledFlag: boolean); {Enable the button? }
{Select/deselect a button}
procedure SelectButton (Button: integer; {Button number }
SelectedFlag: boolean); {Select the button? }
{Determine if a button is enabled}
function ButtonIsEnabled (Button: integer {Button number }
): boolean; {Is the button enabled? }
{Determine if a button is selected}
function ButtonIsSelected (Button: integer {Button number }
): boolean; {Is the button selected? }
{Set a button's title}
procedure ButtonTitle (Button: integer; {Button number }
Title: string); {Button's title }
{Make a button the window's default button}
procedure SetDefaultButton (Button: integer); {Button number }
{Remove the "default button status" from the window's default button}
procedure NoDefaultButton;
{"Flash" a push button as though it were pressed by the user}
procedure FlashButton (Button: integer); {Button number }
{=================================== P I C T U R E B U T T O N S ================================== }
{Create a new Picture Button}
procedure NewPictButton (Button: integer; {Picture button number }
left, top: integer; {Button's top-left corner in window's local co-ord}
BaseID: integer; {Base image's ID number }
procID: longint; {Appearance and Behavior specifications }
EnabledFlag, SelectedFlag: boolean; {"Button is enabled" & "button is selected" flags }
minimum, value, maximum: integer); {Minimum, current, and maximum value }
{Delete a picture button}
procedure DeletePictButton (Button: integer); {Picture button number }
{Enable/disable a picture button}
procedure EnablePictButton (Button: integer; {Picture button number}
EnabledFlag: boolean); {Enable the picture button? }
{Select/deselect a picture button}
procedure SelectPictButton (Button: integer; {Picture button number }
SelectedFlag: boolean); {Select the picture button? }
{Get a picture button's minimum setting}
function GetPictButtonMin (Button: integer {Picture button number }
): integer; {Picture button's minimum setting }
{Set a picture button's minimum setting}
procedure SetPictButtonMin (Button: integer; {Picture button number }
minimum: integer); {Picture button's minimum setting }
{Get a picture button's maximum setting}
function GetPictButtonMax (Button: integer {Picture button number }
): integer; {Picture button's maximum setting }
{Set a picture button's maximum setting}
procedure SetPictButtonMax (Button: integer; {Picture button number }
maximum: integer); {Picture button's maximum setting }
{Get a picture button's current value}
function GetPictButtonVal (Button: integer {Picture button number }
): integer; {Picture button's current value }
{Set a picture button's current value}
procedure SetPictButtonVal (Button: integer; {Picture button number }
value: integer); {Picture button's value }
{Set a picture button's current value, and simultaneously select/deselect it}
procedure SetPictButtonValSelect (Button: integer; {Picture button number }
value: integer; {Picture button's value }
SelectedFlag: boolean); {Select the picture button? }
{Set a picture button's value acceleration 'automatic value changing' }
procedure SetPictButtonAccel (Button: integer; {Picture button number }
Rate: integer); {0 = Linear, 1-3 = Slow to fast acceleration }
{Set a picture button's speed for 'automatic value changing' }
procedure SetPictButtonSpeed (Button: integer; {Picture button number }
Rate: integer); {Rate of change (value increment per second) }
{Determine if a picture button is enabled}
function PictButtonIsEnabled (Button: integer {Picture button number }
): boolean; {Is the button enabled? }
{Determine if a picture button is selected}
function PictButtonIsSelected (Button: integer {Picture button number }
): boolean; {Is the button selected? }
{"Flash" a picture button as though it were pressed by the user}
procedure FlashPictButton (Button: integer); {Picture button number }
{===================================== S C R O L L B A R S ====================================== }
{Create a new scroll bar}
procedure NewScrollBar (ScrollBar: integer; {Scroll bar number }
left, top, right, bottom: integer; {Scroll bar's co-ordinates (local) }
EnabledFlag: boolean; {Enable the scroll bar? }
minimum, value, maximum: integer); {Minimum, current, and maximum value }
{Create a new scroll bar (co-ordinates specified as a 'rect') }
procedure NewScrollBarRect (ScrollBar: integer; {Scroll bar number }
Bounds: rect; {Scroll bar's co-ordinates (local) }
EnabledFlag: boolean; {Enable the scroll bar? }
minimum, value, maximum: integer); {Minimum, current, and maximum value }
{Delete a scroll bar}
procedure DeleteScrollBar (ScrollBar: integer); {Scroll bar number }
{Enable/disable a scroll bar}
procedure EnableScrollBar (ScrollBar: integer; {Scroll bar number }
EnabledFlag: boolean); {Enable the scroll bar? }
{Get a scroll bar's minimum setting}
function GetScrollBarMin (ScrollBar: integer {Scroll bar number }
): integer; {Scroll bar's minimum setting }
{Set a scroll bar's minimum setting}
procedure SetScrollBarMin (ScrollBar: integer; {Scroll bar number }
minimum: integer); {Scroll bar's minimum setting }
{Get a scroll bar's maximum setting}
function GetScrollBarMax (ScrollBar: integer {Scroll bar number }
): integer; {Scroll bar's maximum setting }
{Set a scroll bar's maximum setting}
procedure SetScrollBarMax (ScrollBar: integer; {Scroll bar number }
maximum: integer); {Scroll bar's maximum setting }
{Get a scroll bar's current value}
function GetScrollBarVal (ScrollBar: integer {Scroll bar number }
): integer; {Scroll bar's current value }
{Set a scroll bar's current value}
procedure SetScrollBarVal (ScrollBar: integer; {Scroll bar number }
value: integer); {Scroll bar's current value }
{==================================== E D I T I N G F I E L D S ==================================== }
{Allocate heap storage for a Pascal string, and initialize it.}
function NewStrHandle (StringLen: integer {Size of string being allocated (1-255 chars) }
): StringHandle; {Handle to allocated string }
{Create a new field}
procedure NewField (Field: integer; {Field number }
left, top, right, bottom: integer; {Field's viewing area co-ordinates (local) }
hStr: Handle; {Handle to edit field's text }
teType: integer; {Type: box around field and/or CR allowed? }
Just: integer); {Justification: left, center, right }
{Create a new field (co-ordinates specified as a 'rect') }
procedure NewFieldRect (Field: integer; {Field number }
Bounds: rect; {Field's viewing area co-ordinates (local) }
hStr: Handle; {Handle to edit field's text }
teType: integer; {Type: box around field and/or CR allowed? }
Just: integer); {Justification: left, center, right }
{Delete a field}
procedure DeleteField (Field: integer); {Field number }
{Activate a field}
procedure ActivateField (Field: integer; {Field number }
Selection: integer); {Text selection: all, start, end }
{Deactivate the active field}
procedure DeactivateField;
{Process a mouse click in an inactive field. The click has been detected by the PollSystem procedure.}
procedure ClickInField;
{Get the active field's edited text}
procedure GetFieldString (var EditString: Str255); {Field's edited text }
{Save the active field's edited text in the field's string}
procedure SaveFieldString;
{Determine the active field number}
function ActiveFieldNumber: integer; {Active field number }
{Determine if a field is empty}
function FieldIsEmpty (Field: integer {Field number }
): boolean; {Is the specified field empty? }
{Turn string length limiting on/off for each new field created starting now}
procedure FieldLengthLimit (Limits: boolean); {Should newly created fields be length-limited? }
{Offset a field}
procedure OffsetField (Field: integer; {Field number }
dh, dv: integer); {Number of pixels to be offset (horiz/vert) }
{Paste text into a field}
procedure PasteIntoField (Field: integer; {Field number }
Text: string; {Text which is to be pasted }
Replace: boolean); {Replace all existing text in field? }
{===================================== L I S T B O X E S ======================================= }
{Create a new List Box}
procedure NewListBox (ListBox: integer; {List box number }
left, top, right, bottom: integer; {List box co-ordinates (local) }
BoxType: SignedByte); {Type of responses to mouse clicks, shift-click, }
{ dragging, etc. }
{Create a new List Box (co-ordinates specified as a 'rect') }
procedure NewListBoxRect (ListBox: integer; {List box number }
Bounds: rect; {List box co-ordinates (local) }
BoxType: SignedByte); {Type of responses to mouse clicks, shift-click, }
{ dragging, etc. }
{Delete a List Box}
procedure DeleteListBox (ListBox: integer); {List box number }
{Set a line of text in a List Box}
procedure SetListBoxText (ListBox: integer; {List box number }
LineNum: integer; {Line number }
Text: string); {Text of specified line number }
{Get a line of text from a List Box}
procedure GetListBoxText (ListBox: integer; {List box number }
LineNum: integer; {Line number }
var Text: Str255); {Text of specified line number }
{Get a List Box's line number whose text is greater than or equal to the specified string}
function SearchListBox (ListBox: integer; {List box number }
Text: string {Text being compared }
): integer; {Line number of text }
{Select/deselect a specified List Box line}
procedure SetListBoxLine (ListBox: integer; {List box number }
LineNum: integer; {Line number }
setIt: boolean); {Selects the line? }
{Determine if a specific List Box line is selected}
function GetListBoxLine (ListBox: integer; {List box number }
LineNum: integer {Line number }
): boolean; {Is the line selected? }
{Get the line number of a selected line in a List Box, starting at LineNum and searching down}
function GetListBoxLines (ListBox: integer; {List box number }
LineNum: integer {Line number }
): integer; {Next selected line }
{Insert a blank line into a List Box}
procedure InsertListBoxLine (ListBox: integer; {List box number }
LineNum: integer); {Line number }
{Delete a line from a List Box}
procedure DeleteListBoxLine (ListBox: integer; {List box number }
LineNum: integer); {Line number }
{Turn a List Box's text drawing on/off}
procedure DrawListBox (ListBox: integer; {List box number }
drawIt: boolean); {Draw the list box's text? }
{========================================= M E N U S ========================================== }
{Create the "Apple" menu}
procedure AppleMenu (AboutName: string); {Optional "About…" name }
{Create a menu name, add/change a menu item, or rename an existing menu item (pull-down & hierarchical menus)}
procedure Menu (MenuNumber: integer; {Menu number }
ItemNumber: integer; {Item number within the menu }
EnabledFlag: boolean; {Enable the menu? }
MenuText: string); {Menu title or item name }
{Attach a hierarchical menu to a menu item, or detach a hierarchical menu.}
procedure AttachMenu (MenuNumber: integer; {Menu number to which the submenu is attached}
ItemNumber: integer; {Item number to which the submenu is attached }
SubMenuNumber: integer); {Hierarchical menu number being attached }
{Insert a menu item}
procedure InsertMenuitem (MenuNumber: integer; {Menu number }
ItemNumber: integer; {Item number where insertion is to be made }
EnabledFlag: boolean; {Enable the menu? }
MenuText: string); {Item name }
{Remove an entire menu and its associated items, or a menu item}
procedure RemoveMenu (MenuNumber: integer; {Menu number }
ItemNumber: integer); {Item number within the menu (0=entire menu) }
{Display the menu bar after making changes through the Menu or RemoveMenu procedure}
procedure UpdateMenuBar;
{Get a menu item's text}
procedure GetMenuString (MenuNumber: integer; {Menu number }
ItemNumber: integer; {Item number within the menu }
var MenuText: Str255); {Menu item's name }
{Change the name of a menu item}
procedure RenameItem (MenuNumber: integer; {Menu number }
ItemNumber: integer; {Item number within the menu }
MenuText: string); {Menu item's name }
{Enable/disable a menu or menu item}
procedure EnableMenu (MenuNumber: integer; {Menu number }
ItemNumber: integer; {Item number within the menu (or 0) }
EnabledFlag: boolean); {Enable the menu or item? }
{Display/remove a menu item's check mark}
procedure CheckMenu (MenuNumber: integer; {Menu number }
ItemNumber: integer; {Item number within the menu }
checked: boolean); {Place check mark beside the menu item? }
{Mark a menu item with a specified character (√ or •, etc)}
procedure MenuMark (MenuNumber: integer; {Menu number }
ItemNumber: integer; {Item number within the menu }
markChar: char); {Menu item's character }
{Get a menu item's ‘mark’ character (√ or •, etc) which is optionally displayed at the item's left side}
procedure GetMenuMark (MenuNumber: integer; {Menu number }
ItemNumber: integer; {Item number within the menu }
var markChar: char); {Menu item's character }
{Specify a keyboard equivalent for a menu item}
procedure MenuCmd (MenuNumber: integer; {Menu number }
ItemNumber: integer; {Item number within the menu }
cmdChar: char); {Menu item's keyboard-equivalent character }
{Get a keyboard equivalent for a menu item}
procedure GetMenuCmd (MenuNumber: integer; {Menu number }
ItemNumber: integer; {Item number within the menu }
var cmdChar: char); {Menu item's keyboard-equivalent character }
{Specify an icon to be displayed by a menu item}
procedure MenuIcon (MenuNumber: integer; {Menu number }
ItemNumber: integer; {Item number within the menu }
IconSelector: integer); {IconSelector + 256 = cicn or ICON ID }
{Get the specifier for the icon that is displayed by a menu item}
procedure GetMenuIcon (MenuNumber: integer; {Menu number }
ItemNumber: integer; {Item number within the menu }
var IconSelector: integer); {IconSelector + 256 = cicn or ICON ID }
{Set the character style for a menu item}
procedure MenuStyle (MenuNumber: integer; {Menu number }
ItemNumber: integer; {Item number within the menu }
theStyle: Style); {Menu item's character style }
{Determine the number of items in a menu}
function MenuItemCount (MenuNumber: integer {Menu number }
): integer; {Number of items in the menu }
{Determine a menu's parent menu number}
procedure GetParentMenu (var MenuNumber: integer; {Parent menu's menu number }
var ItemNumber: integer; {Parent menu's item number }
SubMenuNumber: integer); {Menu number whose parent menu is determined}
{Determine a menu item's submenu number}
procedure GetSubMenu (MenuNumber: integer; {Menu number }
ItemNumber: integer; {Item number within the menu }
var SubMenuNumber: integer); {Menu number of this item's submenu }
{Highlight a menu in the menu bar, or turn off menu bar highlights}
procedure MenuHilite (MenuNumber: integer); {Menu num for a pull-down menu (1-15, 0=none) }
{==================================== P O P - U P M E N U S ===================================== }
{Create a new Pop-Up menu}
procedure NewPopUp (MenuNumber: integer; {Pop-Up Menu number }
left, top, right, bottom: integer; {Enclosing rectangle co-ordinates (local) }
MenuTitle: string; {Title }
procID: integer; {Appearance & Behavior specifications }
EnabledFlag: boolean); {"Menu is enabled" flag }
{Create a new Pop-Up menu (co-ordinates specified as a 'rect') }
procedure NewPopUpRect (MenuNumber: integer; {Pop-Up Menu number }
Bounds: rect; {Enclosing rectangle co-ordinates (local) }
Title: string; {Title }
procID: integer; {Appearance & Behavior specifications }
EnabledFlag: boolean); {"Menu is enabled" flag }
{Add or change a Pop-Up menu item, or rename an existing menu item}
procedure PopUpMenu (MenuNumber: integer; {Pop-Up Menu number }
ItemNumber: integer; {Item number within the menu }
EnabledFlag: boolean; {Enable the menu? }
MenuText: string); {Item name }
{Insert a Pop-Up menu item}
procedure InsertPopUpItem (MenuNumber: integer; {Pop-Up Menu number }
ItemNumber: integer; {Item number where insertion is to be made }
EnabledFlag: boolean; {Is menu item enabled? }
MenuText: string); {Item name }
{Remove an Pop-Up menu, or a Pop-Up menu item}
procedure RemovePopUp (MenuNumber: integer; {Pop-Up Menu number }
ItemNumber: integer); {Item number within the menu (0=entire menu) }
{Get an Pop-Up Menu item's text}
procedure GetPopUpString (MenuNumber: integer; {Pop-Up Menu number }
ItemNumber: integer; {Item number within the menu }
var MenuText: str255); {Menu item's name }
{Change the name of a Pop-Up Menu item}
procedure RenamePopUp (MenuNumber: integer; {Pop-Up Menu number }
ItemNumber: integer; {Item number within the menu }
MenuText: string); {Menu item's name }
{Enable/disable a Pop-Up Menu or menu item}
procedure EnablePopUp (MenuNumber: integer; {Pop-Up Menu number }
ItemNumber: integer; {Item number within the menu (or 0) }
EnabledFlag: boolean); {Enable the menu or item? }
{Determine if a Pop-Up Menu is enabled}
function PopUpIsEnabled (MenuNumber: integer {Pop-Up Menu number }
): boolean; {Is the menu enabled? }
{Display/remove a Pop-Up Menu item's check mark}
procedure CheckPopUp (MenuNumber: integer; {Pop-Up Menu number }
ItemNumber: integer; {Item number within the menu }
checked: boolean); {Place check mark beside the menu item? }
{Mark a Pop-Up Menu item with a specified character (√ or •, etc)}
procedure PopUpMark (MenuNumber: integer; {Pop-Up Menu number }
ItemNumber: integer; {Item number within the menu }
markChar: char); {Menu item's character }
{Get a Pop-Up Menu item's ‘mark’ character (√ or •, etc) which is optionally displayed at the item's left side}
procedure GetPopUpMark (MenuNumber: integer; {Pop-Up Menu number }
ItemNumber: integer; {Item number within the menu }
var markChar: char); {Menu item's character }
{Specify an icon to be displayed by a Pop-Up Menu item}
procedure PopUpIcon (MenuNumber: integer; {Pop-Up Menu number }
ItemNumber: integer; {Item number within the menu }
IconSelector: integer); {IconSelector + 256 = cicn or ICON ID }
{Get the specifier for the icon that is displayed by a Pop-Up Menu item}
procedure GetPopUpIcon (MenuNumber: integer; {Pop-Up Menu number }
ItemNumber: integer; {Item number within the menu }
var IconSelector: integer); {IconSelector + 256 = cicn or ICON ID }
{Set the character style for a Pop-Up Menu item}
procedure PopUpStyle (MenuNumber: integer; {Pop-Up Menu number }
ItemNumber: integer; {Item number within the menu }
theStyle: Style); {Menu item's character style }
{Determine the number of items in a Pop-Up Menu}
function PopUpItemCount (MenuNumber: integer {Pop-Up Menu number }
): integer; {Number of items in the menu }
{Determine the selected item in a Pop-Up Menu}
function GetPopUpSelection (MenuNumber: integer {Pop-Up Menu number }
): integer; {Selected item in the menu }
{======================================= C U R S O R S ======================================== }
{Change the cursor shape}
procedure CursorShape (CursorType: integer); {Cursor type }
{Reset the cursor to its appropriate shape depending on its location in the active window.}
procedure ResetCursor;
{Create a new Cursor Table}
procedure NewCursorTable (CursorTable: integer; {Cursor table number }
CursorType: integer); {Cursor type }
{Delete a Cursor Table}
procedure DeleteCursorTable (CursorTable: integer); {Cursor table number }
{Add a new Cursor Zone to a Cursor Table, or replace an existing Cursor Zone}
procedure CursorZone (CursorTable: integer; {Cursor table number }
CursorZone: integer; {Cursor zone number }
CursorType: integer; {Cursor type }
left, top, right, bottom: integer); {Cursor zone's co-ordinates (local) }
{Add a new Cursor Zone to a Cursor Table, or replace an existing Cursor Zone (co-ordinates specified as a 'rect') }
procedure CursorZoneRect (CursorTable: integer; {Cursor table number }
CursorZone: integer; {Cursor zone number }
CursorType: integer; {Cursor type }
ZoneRect: rect); {Cursor zone's co-ordinates (local) }
{Add a new Cursor Zone to a Cursor Table, or replace an existing Cursor Zone (co-ordinates specified as a 'region') }
procedure CursorZoneRgn (CursorTable: integer; {Cursor table number }
CursorZone: integer; {Cursor zone number }
CursorType: integer; {Cursor type }
ZoneRgn: RgnHandle); {Cursor zone's region (local) }
{Indicate that the cursor shape may have to be recalculated due to manually altering Cursor Zone regions.}
procedure ChangedCursorZone;
{Delete a Cursor Zone}
procedure DeleteCursorZone (CursorTable: integer; {Cursor table number }
CursorZone: integer); {Cursor zone number }
{Get the bounding rectangle of a specified Cursor Zone}
procedure GetCursorZone (CursorTable: integer; {Cursor table number }
CursorZone: integer; {Cursor zone number }
var ZoneRect: rect); {Cursor zone's bounding rectangle }
{Get a handle to a specified Cursor Zone's region}
function GetCursorZoneRgn (CursorTable: integer; {Cursor table number }
CursorZone: integer {Cursor zone number }
): RgnHandle; {Handle to Cursor zone's region }
{Make the current window use a specified Cursor Table}
procedure UseCursorTable (CursorTable: integer); {Cursor table number }
{Find the cursor zone that contains a specified point}
function FindCursorZone (thePoint: point {Location in window's local co-ordinates }
): integer; {Cursor zone number containing the point }
{Enable/disable clicks on push-buttons when the watchCursor is displayed}
procedure WatchCursorButtons (Allowed: boolean); {Can push-buttons be clicked when the }
{ watchCursor is displayed? }
{======================================== P O L L I N G ========================================= }
{Tools Plus polling procedure}
function PollSystem (var UserPoll: TPPollRecord {Polling record }
): boolean; {Did an event occurred? }
{Set the number of ticks (1/60 sec) your application can wait until it receives a doNothing event.}
procedure SetNullTime (ForegroundTime: longint; {Duration when application is active }
BackgroundTime: longint); {Duration when application is suspended }
{Determine if "waiting for doNothing events" (timed doNothing events) is supported.}
function WaitAvail: boolean; {Is waiting between doNothing events supported?}
{Determine if your application is 'suspended' (i.e. this is not the active application)}
function ApplicationSuspended: boolean; {Is your application suspended? }
{Clear the mouse's current click or drag (i.e. discontinue the process, clear the event}
procedure ResetMouseClicks;
{==================================== C O L O R D R A W I N G =================================== }
{Determine if the Macintosh has Color QuickDraw}
function HasColorQuickDraw: boolean; {Does the Mac have Color QuickDraw? }
{Determine the number of logical screens (distinct screen depth and color/gray settings)}
function NumberOfScreens: integer; {Number of logical screens available }
{Begin updating the specified logical screen}
procedure BeginUpdateScreen (TheScreen: integer); {Logical screen number }
{End updating the most recent logical screen}
procedure EndUpdateScreen;
{Determine the logical screen's depth}
function ScreenDepth: integer; {Screen depth in bits }
{Determine if the logical screen is set to display in color }
function ScreenHasColors: boolean; {Is the screen set to display in color? }
{Color equivalent to 'PenNormal' routine}
procedure PenColorNormal;
{Color equivalent to 'GetPenState' routine}
procedure GetColorPenState (var ThePenState: ColorPenState);
{Color equivalent to 'SetPenState' routine}
procedure SetColorPenState (ThePenState: ColorPenState);
{================================= U S E R N O T I F I C A T I O N ================================= }
{Define the settings for the Notification Manager.}
procedure SetNotification (IconID: integer; {'SICN' icon ID displayed during notification }
SoundID: integer; {Sound ID that is played at notification }
Message: string; {Message displayed during notification }
ResetAfterUse: boolean); {Revert settings to defaults after notification? }
{If this application is inactive, inform user that this application needs attention.}
function PostNotification: boolean; {Was the user notified? }
{==================================== M I S C E L L A N E O U S =================================== }
{Determine the System file version}
function SystemVersion: extended; {System file version (eg: 7.0.1 returned as 7.01)}
{Draw an icon (ICON, ICN#, icl8, icl4, and cicn)}
procedure DrawIcon (theIcon: integer; {Icon ID number }
left, top: integer; {Icon's top-left corner in window's local co-ord. }
EnabledFlag, SelectedFlag: boolean); {Enable the icon? Select the icon? }
{Specify the default appearance for disabled icons}
procedure DefaultIconLook (IconSpec: integer); {Appearance specifications }
{Draw a standard Macintosh progress thermometer}
procedure DrawThermometer (DisplayRect: rect; {Thermometer's co-ordinates (local) }
Percent: real); {Percent complete (i.e. .5 means 50%) }
{Display a dynamic Alert Box and return the use's action}
function AlertBox (theIcon: integer; {Icon ID number }
AlertText: string; {Alert's text }
AlertCode: longint {Button setup codes }
): integer; {Button clicked by user }
{Change a button name for the next use of the dynamic Alert Box}
procedure AlertButtonName (Button: integer; {Button number from 1 to 9 }
Title: string); {Button's title }
{Draw "zoom" lines (expanding/collapsing rectangle)}
procedure ZoomLines (OldRect: Rect; {Starting rectangle (global co-ordinates) }
NewRect: Rect; {Ending rectangle (global co-ordinates) }
Zoom: integer); {Zoom across, in, or out }
{Play the System Error sound}
procedure Beep;
{Wait for a specified duration}
procedure Wait (ClockTicks: longint); {Number of ticks (1/60th sec) to wait }
{Determine the minimum value of 2 numbers}
function min (Val1, Val2: longint): longint;
{Determine the maximum value of 2 numbers}
function max (Val1, Val2: longint): longint;
{PRIVATE: This function obtains the System file's version number as an integer for the SystemVersion function. }
function _SYSV: integer;
implementation
{The SystemVersion function returns the System File's version as an 'extended' type floating-point number. This }
{source code, when compiled, will produce an appropriate 'extended' type floating-point number whose format is }
{determined by your compiler's settings (ie: Compiled for a math co-processor, 68040, or not) }
function SystemVersion;
begin
SystemVersion := _SYSV / 100; {Get System Version and convert to an }
end; { extended type. }
end.